Technical Field
The present invention, referred to as runspace, relates generally to fields of computing system control, data processing and data communications, and more specifically to methods and systems which provide resource-efficient computation, including for execution of large, many-component tasks distributed on multiple processing elements.
Descriptions of the Related Art
Modern high-end computer architectures embody tens of thousands to millions of processing elements, large amounts of distributed memory, together with varying degrees of non-local memory, networking components and storage infrastructure. These systems present great challenges for both static and dynamic optimization of resources consumed by executing applications. Traditionally, computer architectures have labored to present applications with a single, simple address space, along with intuitively reasonable semantics for sequential execution of code and access to data. The resulting paradigm has served well for years, but becomes an impediment to optimal resource allocation when both computation and data are distributed and virtually all hardware speedup is accomplished via parallel processing, rather than by faster clock rates. The current invention anticipates a stage when semiconductor manufacturers approach physical or cost-efficiency limits on the reduction of circuit sizes, leaving parallelism as the most promising avenue for performance improvement. Already, in applications where maximum performance is critical, traditional OS resource allocation via interrupts and pre-emption impedes performance. Thus, a major challenge in achieving efficient distributed computing is providing system software that makes optimal use of the physical system while providing a usable abstract model of computation for writers of application code.